package com.stefan.sort;
/*
*第一层循环是决定要比较多少轮,10个数你可以设置比较100伦就是i<100
* 但是没必要，你会发现从第n轮之后就排好序了，所以这里最坏的情况就是要length-1轮
* 这里也就是冒泡排序的优化地方，可以设置一个flag，发现在n这个地方就排好序了（这代表什么，这代表就是没有元素交换了）
* 此时就可以跳出外侧循环，表示不需要在进行下一轮的比较了
* 第二层循环就是两两比较的次数，次数是由上一轮的结果决定的，每过一轮，升序排的情况下，最大的数就会靠右边，就不需要比较了
* 所以这里就是j-1-i ： j-1表示第一轮，需要比较的次数，10个数需要比较9次，每一轮有一个数就不需要比较了则 - i
*
* */
public class MaopaoSort {

    public static void main(String[] args) {
        int[] data = {7,9,3,2,4,6,0,5,1,8};
        System.out.print("排序前：");
        for (int m = 0; m < data.length; m++) {
            System.out.print(data[m]);
        }
        System.out.println("");
        int len = data.length;
        for (int i = 0; i < len-1; i++) { //比较的轮次，为啥是len-1，2个数只需要比较1次，当然len也行，但是会多比较1次
            for (int j = 0; j < len-1-i ; j++) { // 为啥要-i，i是伦次，每比较一轮就会有一个数确定(右边最大的)，不需要比较了
                if (data[j] > data[j+1]) {
                    int temp = data[j];
                    data[j] = data[j+1];
                    data[j+1] = temp;
                }
            }
            System.out.print("第"+i+"轮后：");
            for (int m = 0; m < len; m++) {
                System.out.print(data[m]);
            }
            System.out.println("");
        }

    }
}
